const path = require('path')
const WMerge = require('webpack-merge')
const baseConfig = require('./webpack.base.conf.js')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const TerserPlugin = require('terser-webpack-plugin')
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
const webpack = require('webpack')

const target = 'dist/zj' // TODO为了方便访问其他辅助单页

module.exports = WMerge.merge(baseConfig, {
    output: {
        path: path.join(__dirname, '../' + target),
        filename: 'assets/js/[name].[contenthash:8].js',
        chunkFilename: 'assets/js/[name].[contenthash:8].chunk.js',
        libraryTarget:"umd",
        publicPath: '/zj'
    },
    plugins: [
        new CleanWebpackPlugin(),
        //new BundleAnalyzerPlugin(),
        new webpack.DefinePlugin({
            PRODUCTION: JSON.stringify(false),
            DEVELOPMENT: JSON.stringify(false),
            TESTING: JSON.stringify(true)
        }),
        new OptimizeCssAssetsPlugin({
            assetNameRegExp: /\.optimize\.css$/g,
            cssProcessor: require('cssnano'),
            cssProcessorPluginOptions: {
                preset: ['default', { discardComments: { removeAll: true } }]
            },
            canPrint: true
        })
    ],
    optimization: {
        minimizer: [
            new TerserPlugin({
                cache: true,
                parallel: true,
                sourceMap: false // Must be set to true if using source-maps in production
            })
        ],
        splitChunks: {
            cacheGroups: {
                commons: {
                    chunks: 'initial',
                    minChunks: 2,
                    maxInitialRequests: 5,
                    minSize: 1,
                    name: 'common'
                }
            },
            chunks: 'all'
        },
        runtimeChunk: {
            name: 'runtime'
        }
    }
})
